package JavaException;

import javax.swing.*;

/**
 * 异常链: 异常链是以一个异常对象为参数构造新的异常对象，新的异常对象将包含先前异常的信息。
 */
public class ExceptionDemo5 {

    /**
     * 第一个自定义的静态内部异常类
     */
    static class FirstCustomException extends Exception {

        // 无参构造方法
        public FirstCustomException() {
            super("第一个异常");
        }
    }

    /**
     * 第二个自定义一的静态内部异常类
     */
    static class SecondCustomException extends Exception {

        public SecondCustomException() {
            super("第二个异常");
        }
    }

    /**
     * 第三个自定义的静态内部异常类
     */
    static class ThirdCustomException extends Exception {

        public ThirdCustomException() {
            super("第三个异常");
        }
    }

    /**
     * 测试异常链静态方法1，直接抛出第一个自定义的静态内部异常类
     * @throws FirstCustomException
     */
    public static void f1() throws FirstCustomException {
        throw new FirstCustomException();
    }


    /**
     * 测试异常链静态方法2，调用f1()方法，并抛出第二个自定义的静态内部异常类
     * @throws SecondCustomException
     */
}
